// remotetab.h
#ifndef REMOTETAB_H
#define REMOTETAB_H

#include <QWidget>
#include <QJsonObject>
#include <QJsonValue>
#include <QMap>
#include <QIntValidator>
#include "modbusslave.h"
#include <QTimer>
namespace Ui
{
    class remoteTab;
}

class remoteTab : public QWidget
{
    Q_OBJECT

public:
    explicit remoteTab(const QString &tabName, int maxRegisterAddress = 1100, QWidget *parent = nullptr);
    ~remoteTab();

    // 添加获取参数的方法
    QJsonObject getParameters() const;

    // 添加设置参数的方法
    void setParameters(const QJsonObject &params);

    // 添加更新数据映射的方法
    void updateModbusDataMap(const QMap<QString, QString> &dataMap);
    void setNetworkConfigs(const QMap<QString, QJsonObject> &configs);

private:
    Ui::remoteTab *ui;
    QMap<QString, QString> m_modbusDataMap;      // 数据映射表
    QMap<QString, QJsonObject> m_networkConfigs; // 存储网卡配置信息
    modbusSlave *m_modbusSlave;                  // Modbus从站实例
    QTimer *m_serialPortRefreshTimer;
    int m_maxRegisterAddress; // 最大寄存器地址
    void initSerialPorts();
    void initBaudRates();
    void initNetworkDevices();
    void setupModbusSlave(const QJsonObject &params); // 根据参数设置Modbus从站

    // 新增方法：获取网卡真实IP地址（改为const方法）
    QString getRealIpAddress(const QString &deviceName) const;

signals:
    void tabNameChanged(const QString &name);
    // void networkDeviceChanged(const QString &deviceName); // 添加网卡变化信号

private slots:
    void on_le_remoteName_textEdited(const QString &arg1);
    void on_cb_connectType_currentIndexChanged(int index);
    void on_cb_connectType_4_currentIndexChanged(int index); // 网卡选择变化槽函数

public slots:
    // 添加设置网络设备列表的公共方法
    void setNetworkDevices(const QStringList &devices);
};

#endif // REMOTETAB_H